package 类与对象.异常;
/*
    1.如果发生异常，则异常后面的代码不会被执行，直接进入到catch块
    2.如果异常没有发生，则顺序执行try的代码块，不会进入catch
    3.如果希望不管有没有发生异常，都要执行某段代码，则用finally
    如果try代码块有可能有多个异常，可以使用多个catch分别捕获不同的异常，相应处理，要求子类异常写在前面，父类异常写在后面
 */
public class TryCatch {
    public static void main(String[] args) {
//        try{
//            String str = "world";
//            int i = Integer.parseInt(str);
//            System.out.println("数字" + i);
//        }catch (NumberFormatException e){
//            System.out.println("异常信息" + e.getMessage());
//        }finally {
//            System.out.println("finally");
//        }
        test();
    }

    public static void test(){
        class Person{
            public void test(){};
        }

        Person person = new Person();

        try{
            person = null;
            System.out.println(person.getClass());
            int n1 = 1;
            int n2 = 1;
            int res = n1 / n2;
        }catch (NullPointerException e){
            System.out.println("空指针异常 " + e.getMessage());
        }catch (ArithmeticException e){
            System.out.println("算数异常 " + e.getMessage());
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            System.out.println("finally");
        }
    }
}
